在取得資料,並且做出圖表後,仍然需要把我們每次的資料儲存下來,這時候pandas就可以輕鬆建立資料的csv
。
廢話不多說,直接看這次的程式碼Day8_saveData.py
import requests
import json
import numpy
import pandas
# API位置
start_time = 946656000 # 2000/1/1
end_time = 1600272000 # 2020/9/17
stock_code = 2317
stock_market = "TW"
address = f"https://query1.finance.yahoo.com/v8/finance/chart/{stock_code}.{stock_market}?period1={start_time}&period2={end_time}&interval=1d&events=history&=hP2rOschxO0"
# 使用requests 來跟遠端 API server 索取資料
response = requests.get(address)
# 序列化資料回報
data = json.loads(response.text)
# 把json格式資料放入pandas中
df = pandas.DataFrame(
data["chart"]["result"][0]["indicators"]["quote"][0],
index=pandas.to_datetime(
numpy.array(data["chart"]["result"][0]["timestamp"]) * 1000 * 1000 * 1000
),
columns=["open","high","low","close","volume"]
)
# 印出前3行
print(df[:3])
# 印出前5行
print(df.head())
# 印出後5行
print(df.tail())
# 寫成csv
df.tail().to_csv(f"{stock_code}_最近五天.csv")
df.to_csv(f"{stock_code}_{start_time}_{end_time}.csv")
print("===finished===")
其中注意的是df.to_csv
(檔案名稱),這樣就可以把DataFrame
轉成csv
囉
address
使用代碼,讓我們的股票代碼和交易所變成變數pandas.DataFrame
中多了columns
,讓我們每次的資料可以如我們預期的排列,不然每次的開高低收
這四個的順序不一樣,到時候我們在處理或觀看的時候很不方便。df.tail()
:表示最後5筆資料。